{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "7bd88d95",
   "metadata": {},
   "source": [
    "### Load and pre-process the dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f5828ecb",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1, 3, 2, 0, 70, 67, 74, 74, 77]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Processing dataset...: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 22262/22262 [00:19<00:00, 1144.42it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "sentence length (correct)  22262\n",
      "sentence length (broken )  44524\n",
      "max sentence length (correct) 304\n",
      "max sentence length (broken ) 1037\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n"
     ]
    }
   ],
   "source": [
    "from pathlib import Path\n",
    "import json\n",
    "from helper.sentence_destructor import destruct_sentence\n",
    "import random\n",
    "from tokenizers import Tokenizer, Encoding\n",
    "import tqdm\n",
    "from typing import Sequence\n",
    "from helper.dataset import SentenceDataset\n",
    "\n",
    "input_tokenizer: Tokenizer = Tokenizer.from_file(str(Path.cwd().parent / \"config/input_tokenizer.json\"))\n",
    "output_tokenizer: Tokenizer = Tokenizer.from_file(str(Path.cwd().parent / \"config/output_tokenizer.json\"))\n",
    "\n",
    "print(input_tokenizer.encode(\"<UNK><EOS><SOS><PAD>hello\").ids)\n",
    "data_dir = Path.cwd().parent / \".data\"\n",
    "dataset_file = data_dir / \"text\" / \"1000.json\"\n",
    "my_dataset = SentenceDataset(dataset_file, input_tokenizer, output_tokenizer, broken_sentence_variation_count=2)\n",
    "\n",
    "\n",
    "print(f\"sentence length (correct)  {len(my_dataset.correct_sentences)}\")\n",
    "print(f\"sentence length (broken )  {len(my_dataset.broken_sentences)}\")\n",
    "\n",
    "print(f\"max sentence length (correct) {my_dataset.max_correct_sentence_length}\")\n",
    "print(f\"max sentence length (broken ) {my_dataset.max_broken_sentence_length}\")\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "31f0fd64",
   "metadata": {},
   "source": [
    "### Lets do some sentence length statistics."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "0a1c325e",
   "metadata": {},
   "outputs": [],
   "source": [
    "import seaborn\n",
    "from typing import Sequence\n",
    "\n",
    "def calculate_statistics(items: list[list[int]]) -> dict[int, int]:\n",
    "    lengths: dict[int, int] = {}\n",
    "\n",
    "    for s in items:\n",
    "        length = len(s)\n",
    "        lengths[length] = lengths[length] + 1 if length in lengths else 1\n",
    "    return lengths\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "fe7ff665",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'Correct sentence count')"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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du0aAEAul2PMmDH46aefcOTIkRrHGf8r3t3dHUDNL8vaFBQUoKioyGRbq1at4OnpieLiYgBAdHQ0tFotXn31VZSWltbZPnO4ubnV2saAgADcfffd+M9//oOUlBSLfNawYcPg6emJpUuX1jhX4zWr7++gLuPGjcP169fx73//u8Y+42eMGDECer2+xjHvvPMOZDIZhg8fDqA8cDVp0gR79+41Oe7999+/xZnenLu7e73+JohshZUdIhto1aoV1q5di4cffhgdOnTApEmT0KlTJ5SUlGD//v1Yt24dJk+eDADo2rUrYmJi8N///hdZWVkYNGgQDh06hE8//RRjxozB4MGDb7sdcrkcH330EYYPH46OHTtiypQpaNq0Ka5cuYJdu3ZBq9Xip59+AlA+C+7WrVsxaNAgTJ8+HR06dEBKSgrWrVuH3377Dd7e3ujWrRsUCgVef/11ZGdnQ6PRYMiQIQgICKjx2WfPnsXQoUPx0EMPITw8HEqlEuvXr0daWhrGjx8PoPzLd9WqVXj00UfRo0cPjB8/Hv7+/khOTsbPP/+M/v371/olfzOurq4IDw/H119/jbZt28LX1xedOnVCp06dsHLlSgwYMACdO3fG448/jpYtWyItLQ1xcXG4fPkyjh8/btZnabVavPPOO5g2bRp69+6NRx55BD4+Pjh+/DgKCgrw6aefmvU7qM2kSZPw2WefYc6cOTh06BDuuusu5OfnY/v27fi///s/jB49GqNGjcLgwYPx4osv4sKFC+jatSu2bt2KH374AbNmzTIZCj5t2jS89tprmDZtGnr16oW9e/fi7NmzZp13dT179sT27dvx9ttvIzg4GC1atEBERMQdvSfRHbHjSDCiRufs2bPi8ccfF82bNxdqtVp4enqK/v37i/fee89k+HNpaalYvHixaNGihVCpVCIkJOSmkwpWZxx6vm7dulrbcfToUTF27Fjh5+cnNBqNCAsLEw899JDYsWOHyXEXL14UkyZNEv7+/kKj0YiWLVuK2NhYUVxcLB3z4YcfipYtWwqFQnHTYejXr18XsbGxon379sLd3V14eXmJiIgI8c0339Ta/ujoaOHl5SVcXFxEq1atxOTJk8WRI0ekY4yTClZnHCJd1f79+0XPnj2FWq2uMaT6/PnzYtKkSUKn0wmVSiWaNm0q7rvvPvHtt99KxxiHnlcfhm+8ztXP+ccffxT9+vUTrq6uQqvVij59+ogvv/zS5Jj6/g5qU1BQIF588UXp70On04kHH3xQnD9/XjomNzdXzJ49WwQHBwuVSiXatGlTY1JB43tNnTpVeHl5CU9PT/HQQw+J9PT0OoeeX7t2zeT1xmtTdWLIP//8UwwcOFC4urpyUkFyCDIh2KuMiIiInBf77BAREZFTY9ghIiIip8awQ0RERE6NYYeIiIicGsMOEREROTWGHSIiInJqnFQQ5WvVXL16FZ6enpzmnIiIqIEQQiA3NxfBwcGQy+uu3zDsALh69SpCQkLs3QwiIiK6DZcuXUKzZs3q3M+wA0gL5V26dAlardbOrSEiIqL6yMnJQUhIiMmCt7Vh2EHlCr1arZZhh4iIqIG5VRcUdlAmIiIip8awQ0RERE6NYYeIiIicGsMOEREROTWGHSIiInJqDDtERETk1Bh2iIiIyKkx7BAREZFTY9ghIiIip8awQ0RERE6NYYeIiIicGsMOEREROTWGHQdRWKKHEMLezSAiInI6DDsO4Fx6Lrot2Yp/rj9h76YQERE5HYYdB7DuyGUUlxnw5aFL9m4KERGR02HYcQBhfu7Sz9mFpXZsCRERkfNh2HEA7hqF9HNCaq4dW0JEROR8GHYcgN5Q2TH5z9QcO7aEiIjI+TDsOICqYedMCis7RERElsSw4wCqjjhnZYeIiMiyGHYcgL5K2klIzYXBwPl2iIiILMWuYad58+aQyWQ1HrGxsQCAoqIixMbGws/PDx4eHhg3bhzS0tJM3iM5ORkjR46Em5sbAgIC8Oyzz6KsrMwep3Pbqt7GKijR41JmgR1bQ0RE5FzsGnYOHz6MlJQU6bFt2zYAwN/+9jcAwOzZs/HTTz9h3bp12LNnD65evYqxY8dKr9fr9Rg5ciRKSkqwf/9+fPrpp1izZg0WLFhgl/O5XYZqMydfyii0U0uIiIicj13Djr+/P3Q6nfTYuHEjWrVqhUGDBiE7Oxsff/wx3n77bQwZMgQ9e/bE6tWrsX//fhw4cAAAsHXrVpw+fRqff/45unXrhuHDh+Pll1/GypUrUVJSYs9TM4u+2m2rUoPBTi0hIiJyPg7TZ6ekpASff/45HnvsMchkMsTHx6O0tBRRUVHSMe3bt0doaCji4uIAAHFxcejcuTMCAwOlY6Kjo5GTk4NTp07V+VnFxcXIyckxedhT9S46ZXr22SEiIrIUhwk7GzZsQFZWFiZPngwASE1NhVqthre3t8lxgYGBSE1NlY6pGnSM+4376rJ06VJ4eXlJj5CQEMudyG2o3iFZz8oOERGRxThM2Pn4448xfPhwBAcHW/2z5s2bh+zsbOlx6ZJ916TSV+uzU8rKDhERkcUo7d0AALh48SK2b9+O77//Xtqm0+lQUlKCrKwsk+pOWloadDqddMyhQ4dM3ss4Wst4TG00Gg00Go0Fz+DOVO+zU/05ERER3T6HqOysXr0aAQEBGDlypLStZ8+eUKlU2LFjh7QtISEBycnJiIyMBABERkbixIkTSE9Pl47Ztm0btFotwsPDbXcCd0hUq+yUMewQERFZjN0rOwaDAatXr0ZMTAyUysrmeHl5YerUqZgzZw58fX2h1Wrx5JNPIjIyEn379gUADBs2DOHh4Xj00UexbNkypKamYv78+YiNjXWoys2t6Kt10SmrvoGIiIhum93Dzvbt25GcnIzHHnusxr533nkHcrkc48aNQ3FxMaKjo/H+++9L+xUKBTZu3IgZM2YgMjIS7u7uiImJwZIlS2x5Cnesep8dVnaIiIgsx+5hZ9iwYTVu4xi5uLhg5cqVWLlyZZ2vDwsLw6ZNm6zVPJuoPhqLlR0iIiLLcYg+O40dKztERETWw7DjAKovF8GwQ0REZDkMOw6g5qSCDDtERESWwrDjAGqOxmLYISIishSGHQdQ8zYWOygTERFZCsOOA2CfHSIiIuth2HEA1fvocOg5ERGR5TDsOABWdoiIiKyHYccBGCs7KoUMADsoExERWRLDjgMw3rXSKBUAWNkhIiKyJIYdB2BcLkOtLP91sM8OERGR5TDsOADjchFqRfmvg5MKEhERWQ7DjgMwhhupssOwQ0REZDEMOw7AUP02FicVJCIishiGHQcgVXYUxj47rOwQERFZCsOOAzDeteJtLCIiIstj2HEAxlXPNQw7REREFsew4wD0HHpORERkNQw7DkAvVXY4qSAREZGlMew4AOPSWBpWdoiIiCyOYccBVJ9nh5MKEhERWQ7DjgOoPoMyb2MRERFZDsOOA5BGY6k4zw4REZGlMew4gJqVHfbZISIishSGHQdgvGul4jw7REREFsew4wBqTCrI21hEREQWw7DjAGques7bWERERJbCsOMAjKueGycV5NBzIiIiy2HYcQCGastFlPI2FhERkcUw7DgAabkIBScVJCIisjSGHQdgzDbss0NERGR5DDsOQM/RWERERFbDsOMAao7GEhCCgYeIiMgSGHYcgDHYqBSVvw722yEiIrIMhh0HoBemt7EAzqJMRERkKXYPO1euXMHf//53+Pn5wdXVFZ07d8aRI0ek/UIILFiwAEFBQXB1dUVUVBQSExNN3iMjIwMTJ06EVquFt7c3pk6diry8PFufym3TV/RHVjPsEBERWZxdw05mZib69+8PlUqFX375BadPn8Zbb70FHx8f6Zhly5ZhxYoV+OCDD3Dw4EG4u7sjOjoaRUVF0jETJ07EqVOnsG3bNmzcuBF79+7F9OnT7XFKt6X6pIIAoGcnZSIiIotQ2vPDX3/9dYSEhGD16tXSthYtWkg/CyGwfPlyzJ8/H6NHjwYAfPbZZwgMDMSGDRswfvx4nDlzBps3b8bhw4fRq1cvAMB7772HESNG4M0330RwcLBtT+o2VE4qKJO2lXL4ORERkUXYtbLz448/olevXvjb3/6GgIAAdO/eHR9++KG0PykpCampqYiKipK2eXl5ISIiAnFxcQCAuLg4eHt7S0EHAKKioiCXy3Hw4EHbncwdMHZGlstkUMhlJtuIiIjoztg17Pz1119YtWoV2rRpgy1btmDGjBl46qmn8OmnnwIAUlNTAQCBgYEmrwsMDJT2paamIiAgwGS/UqmEr6+vdEx1xcXFyMnJMXnYk3HVc4VcBmVF2GGfHSIiIsuw620sg8GAXr164dVXXwUAdO/eHSdPnsQHH3yAmJgYq33u0qVLsXjxYqu9v7mMo7HksvKwUwygTM/bWERERJZg18pOUFAQwsPDTbZ16NABycnJAACdTgcASEtLMzkmLS1N2qfT6ZCenm6yv6ysDBkZGdIx1c2bNw/Z2dnS49KlSxY5n9tl7J6jkMugVFROLEhERER3zq5hp3///khISDDZdvbsWYSFhQEo76ys0+mwY8cOaX9OTg4OHjyIyMhIAEBkZCSysrIQHx8vHbNz504YDAZERETU+rkajQZardbkYU+GapUdgEtGEBERWYpdw87s2bNx4MABvPrqqzh37hzWrl2L//73v4iNjQUAyGQyzJo1C//617/w448/4sSJE5g0aRKCg4MxZswYAOWVoHvvvRePP/44Dh06hH379mHmzJkYP358gxiJBVS5jSWH1EG5+mKg2QWl+PtHB/Ft/GWbt4+IiKghs2ufnd69e2P9+vWYN28elixZghYtWmD58uWYOHGidMxzzz2H/Px8TJ8+HVlZWRgwYAA2b94MFxcX6ZgvvvgCM2fOxNChQyGXyzFu3DisWLHCHqdkNiEEjMtgKWQyacmI6pWdt7Yl4Ldz1/Hbuet4sGczWzeTiIiowbJr2AGA++67D/fdd1+d+2UyGZYsWYIlS5bUeYyvry/Wrl1rjeZZXdUh5gq5rEplp3y7wSAgl8twJsW+I8aIiIgaKruHncZOX2V1c7lcBqXC2GfHgENJGZj+vyN4uFcI0nKK7dVEIiKiBo1hx86qZB2TDsrJGQV49ts/AAD/2fuXybpZREREVH/8BrUzk9tYMhmU8vJfyUs/nDQ5rqSM8+4QERHdDoYdOzO9jQXpNlZRad3hxsA5eIiIiOqNYcfODDUqOzKT/Z2a1pwDqLBUb/V2EREROQuGHTurWqQpXxvL9FfSr1WTGq8pKGHYISIiqi+GHTur2mdHVmXVc6PIln41XlPIsENERFRvDDt2ZlwqwhhyjH12jHo196kRgApKy2zTOCIiIifAsGNnxsqOQlYRdqoEG41SDk8XFbo28zJ5DW9jERER1R/Djp0Zw46xq45x1XMA8HQpnwbp3fHd8cnkXmgb6AGAt7GIiIjMwbBjZ8aR5/JaKjsemvKwE+LrhiHtA+GqLn9eV2Unr7gMk1cfwrojl6zYYiIiooaFYcfOjPPsSLexqlR23DWmE1y7qRQAgIKS2vvs7Dt3HbsTruGTfRes0FIiIqKGiWHHzipvY9Vd2TFyVZeHnbpuY2XklwAA8opLLd5OIiKihophx85qjMaqEnaMfXaMjGGnrttYxrCTX8w+PUREREYMO3ZmDDtSnx1F3ZUd422sumZQvpFnrOxwaDoREZERw46dSbexKjJO1Tl1PKpVdtyq3Ma6cD2/xu2szILysFNSZkCpnguHEhERAQw7dmeoyCSVt7Hq7qBsHI0VfzETd7+5G7O/Pmay/0bFbSwAyGd1h4iICADDjt3pq9/Gqtpnp/ptrIrKzu/JmQCAfeevQ1RZNT0jv1j6mbeyiIiIyjHs2Jk0g7K85tDzGn12KsJOcVl5OSi3qAyXMwul/Rl5VSs77KRMREQEMOzYnRCmfXZMhp67qEyONY7GqurU1Wzp54yCyrDD4edERETlGHbsrMY8OzcbjVVr2MkBUD7RYFFpZafkPFZ2iIiIADDs2F2NGZRvNqmgyvQ5AJyuCDs3qtzCAthBmYiIyIhhx85qjMaq2menjkkFqzJWdjILTMMOOygTERGVY9ixsxqTCt6kslPbbazUnCLcyCs2GXYOsLJDRERkxLBjZ9LQ84rfhOJmy0WoTMOOtmL/t/GXTUZiAQw7RERERgw7dmYwmPbZKdNXzptTY9XzKpUdmQyYfU9bAMCyLQnY+MdVk2PZQZmIiKgcw46dVR+NVXXdK7dqlRw3dWX48XFTY3K/5hjXoxn0BoFdCddMjuXQcyIionIMO3ZmqDYaq6hK2JFXuaUFmHZQbuKhhkwmw8tjOsLHrXI+HuOtL04qSEREVI5hx84qCjtSB+Wqc+VU52YSdjQV25SI6ddc2h7q6waAo7GIiIiMGHbsrPI2VvnzorK6KzIqhRyqikkHjWEHAGIim0s/G7ezgzIREVE5hh07k25jVdyy8nNX3/R444isqmHHx12NZQ92QVSHAIzr2QwAww4REZFRzSl5yaakyk7FbazpA1vi4o0CjOoaXOvxbmolcorK0MTTNBQ91CsED/UKQdz5GwB4G4uIiMiIYcfOqq967umiwooJ3es83thvp2plpyrjRITsoExERFSOt7HsTFTroHwrvhW3uZp5u9a637jEBCs7RERE5VjZsTN9teUibmXR/R1xKCkDfVv61brfXVNe+ckvKYMQArJ6vi8REZGzYtixs8rbWPU7vlNTL3Rq6lXnfuNtLCGAghJ9jVmYiYiIGhu73sZatGgRZDKZyaN9+/bS/qKiIsTGxsLPzw8eHh4YN24c0tLSTN4jOTkZI0eOhJubGwICAvDss8+irKzh3MKpPhrrTrmqFDC+FUdkEREROUBlp2PHjti+fbv0XKmsbNLs2bPx888/Y926dfDy8sLMmTMxduxY7Nu3DwCg1+sxcuRI6HQ67N+/HykpKZg0aRJUKhVeffVVm5/L7TCujWWp200ymQzuaiVyi8uQV1yGAIu8KxERUcNl97CjVCqh0+lqbM/OzsbHH3+MtWvXYsiQIQCA1atXo0OHDjhw4AD69u2LrVu34vTp09i+fTsCAwPRrVs3vPzyy3j++eexaNEiqNU3n7PGERjX/VRYsG+Nu6Y87HBEFhERkQOMxkpMTERwcDBatmyJiRMnIjk5GQAQHx+P0tJSREVFSce2b98eoaGhiIuLAwDExcWhc+fOCAwMlI6Jjo5GTk4OTp06VednFhcXIycnx+RhLwaDZW9jAZWdlDkii4iIyM5hJyIiAmvWrMHmzZuxatUqJCUl4a677kJubi5SU1OhVqvh7e1t8prAwECkpqYCAFJTU02CjnG/cV9dli5dCi8vL+kREhJi2RMzg7mjsepD61q+MGhmQYnF3pOIiKihsuttrOHDh0s/d+nSBREREQgLC8M333wDV9fa55GxhHnz5mHOnDnS85ycHLsFHnNHY9VHiybuOJqchXPpeZZ7UyIiogbK7rexqvL29kbbtm1x7tw56HQ6lJSUICsry+SYtLQ0qY+PTqerMTrL+Ly2fkBGGo0GWq3W5GEvwgqVnbaBngCAs2m5+OVECp768ihvaRERUaPlUGEnLy8P58+fR1BQEHr27AmVSoUdO3ZI+xMSEpCcnIzIyEgAQGRkJE6cOIH09HTpmG3btkGr1SI8PNzm7b8dekP5/8ot2GenXZWwM+OL3/Hj8atYd+SSxd6fiIioIbHrbaxnnnkGo0aNQlhYGK5evYqFCxdCoVBgwoQJ8PLywtSpUzFnzhz4+vpCq9XiySefRGRkJPr27QsAGDZsGMLDw/Hoo49i2bJlSE1Nxfz58xEbGwuNpva1oxyNsc+OJUdjtdWVh53EKrexCks5MouIiBonu4ady5cvY8KECbhx4wb8/f0xYMAAHDhwAP7+/gCAd955B3K5HOPGjUNxcTGio6Px/vvvS69XKBTYuHEjZsyYgcjISLi7uyMmJgZLliyx1ymZzRqjsYK9XOChUZrcuioqYdghIqLGya5h56uvvrrpfhcXF6xcuRIrV66s85iwsDBs2rTJ0k2zGeMMypZcwkomk6FNoAeOJmdJ267llY/MupFXjPve+w33dtJh4aiOlvtQIiIiB+VQfXYaI2vcxgKAtgGeJs+v5xUDALafSUNKdhFW77uA7MJSi34mERGRI2LYsTNr3MYCKvvtGBnDTtVRX7v+TAcREZGzY9ixM2uMxgKA3s19AAAuqvJfsTHs5BRV9uP55WSKRT+TiIjIETHs2JnBSrexujTzxo8z++PLx8tHrl3PLe+zU/XW1Z6z11BQwvl3iIjIuTHs2JlBmlTQ8u/dpZm3NMFgYake+cVlyKkSdopKDTj4V4blP5iIiMiBmB12PvvsMxQXF9fYXlJSgs8++8wijWpMjMtFWPo2lpG7RglXVfnCoNfzimt0Sr6aXWiVzyUiInIUZoedKVOmIDs7u8b23NxcTJkyxSKNakysdRurqiaeagCmYceYrYy3t4iIiJyV2WFHCAFZLV/Mly9fhpeXl0Ua1ZhYu7IDAE08ymeTvpZbIoWdVv4eACo7LhMRETmrek8q2L17d8hkMshkMgwdOhRKZeVL9Xo9kpKScO+991qlkc6sIutYfOh5VcawU7Wy08rfA4npeQw7RETk9OoddsaMGQMAOHbsGKKjo+Hh4SHtU6vVaN68OcaNG2fxBjo74zw7Vsw6tYedAHfgFCs7RETk/OoddhYuXAgAaN68OR5++GG4uLhYrVGNiV4ajWW9tOPvUbPPTssmxttY7LNDRETOzey1sWJiYgCUj75KT0+HwWAw2R8aGmqZljUSeivNoFxVE8/yys6VzEKUlJX/vloFVISdXFZ2iIjIuZkddhITE/HYY49h//79JtuNHZf1eq6ubQ5pNJYN+uycu5YHoPyWWXM/NwBAbnEZikr1cKkYnk5ERORszA47kydPhlKpxMaNGxEUFFTryCyqP2NhzJrXMdjbFQBwKaN8Th2tqwperiqoFXKU6A24nleMZj5uVvt8IiIiezI77Bw7dgzx8fFo3769NdrT6Fhr1fOqWvq7mzz3clVBJpPBz0ONlOwiXM8rYdghIiKnZfY8O+Hh4bh+/bo12tIoVa56br3P0Lqo4F/RbwcoDztAlVFa7LdDREROzOyv2Ndffx3PPfccdu/ejRs3biAnJ8fkQeaxxWgsAGjZpLK6Uxl2KkdpEREROSuzb2NFRUUBAIYOHWqynR2Ub48tRmMBQEt/DxxMKl/0U1u9ssOwQ0RETszssLNr1y5rtKPRqijsWL2y08q/lsqOpzHscK4dIiJyXmaHnUGDBlmjHY2WLdbGAirXwgJq9tm5xsoOERE5MbPDzt69e2+6f+DAgbfdmMbIFqOxgLrCTkWfHXZQJiIiJ2Z22Ln77rtrbKs6Rwz77JjHFqOxAKCpjyvUSjlKygw1KjsZ+byNRUREzsvsr9jMzEyTR3p6OjZv3ozevXtj69at1mijUzPOoGztyRkVchla+JX32zGGHQ9NedYtKNGjqFSPJ/4Xj28OX7JqO4iIiGzN7MqOl5dXjW333HMP1Go15syZg/j4eIs0rLHQV3RQtvZtLACIHdIaPx2/igFtmgAA3CvCTl5xGQ5fyMDmU6k4dy0PD/UOsXpbiIiIbMXssFOXwMBAJCQkWOrtGg2DjYaeA8D9XYNxf9dg6bmxspNfXIacwjIAQGEJb0MSEZFzMTvs/PHHHybPhRBISUnBa6+9hm7dulmqXY2GrUZj1cZNU774Z5lBICO/vJNyQUmZzdtBRERkTWaHnW7dukEmk0EYJ4ip0LdvX3zyyScWa1hjYbDRaKzauKsrf/1pOeVhp7CUlR0iInIuZoedpKQkk+dyuRz+/v5wcXGxWKMak6KKcKFS2D7sKOQyuKoUKCzVIzWnqKI9BhgMwi6VJiIiImswO+yEhYVZox2NksEgcDWrPGQEe7vapQ3uGiUKS/VIqwg7AFBUpoeb2mLduYiIiOzqtmZ32bNnD0aNGoXWrVujdevWuP/++/Hrr79aum1OLz23GCV6AxRyGYK87FMZ86jot5OaXRl2CthJmYiInIjZYefzzz9HVFQU3Nzc8NRTT+Gpp56Cq6srhg4dirVr11qjjU4rOaMAABDs7QKltWcVrINx+HlqlcoOR2QREZEzMftexSuvvIJly5Zh9uzZ0rannnoKb7/9Nl5++WU88sgjFm2gM7tUEXZCfNzs1gZj2MktqhyFxU7KRETkTMwuJ/z1118YNWpUje33339/jc7LdHOXMu0fdoxz7VTFyg4RETkTs8NOSEgIduzYUWP79u3bERLCmXfNcSmjEAAQ4mufzslAZWWnKvbZISIiZ2L2bay5c+fiqaeewrFjx9CvXz8AwL59+7BmzRq8++67Fm+gM5MqO772rOwoamwr4m0sIiJyImZXdmbMmIGvvvoKJ06cwKxZszBr1iycPHkSX3/9Nf7xj3/cdkNee+01yGQyzJo1S9pWVFSE2NhY+Pn5wcPDA+PGjUNaWprJ65KTkzFy5Ei4ubkhICAAzz77LMrKGsYswJcr+uw0s2efnVqGmLOyQ0REzuS2JlN54IEH8MADD1isEYcPH8Z//vMfdOnSxWT77Nmz8fPPP2PdunXw8vLCzJkzMXbsWOzbtw8AoNfrMXLkSOh0Ouzfvx8pKSmYNGkSVCoVXn31VYu1zxpKygxIqRgB5Wi3sdhBmYiInInZlZ3Dhw/j4MGDNbYfPHgQR44cMbsBeXl5mDhxIj788EP4+PhI27Ozs/Hxxx/j7bffxpAhQ9CzZ0+sXr0a+/fvx4EDBwAAW7duxenTp/H555+jW7duGD58OF5++WWsXLkSJSUlZrfFlq5mFUIIwEUlh7+Hxm7tqL2DcsOojBEREdWH2WEnNjYWly5dqrH9ypUriI2NNbsBsbGxGDlyJKKioky2x8fHo7S01GR7+/btERoairi4OABAXFwcOnfujMDAQOmY6Oho5OTk4NSpU3V+ZnFxMXJyckwetlZ1JJbMDutiGbnV0meHlR0iInImZt/GOn36NHr06FFje/fu3XH69Gmz3uurr77C77//jsOHD9fYl5qaCrVaDW9vb5PtgYGBSE1NlY6pGnSM+4376rJ06VIsXrzYrLZaWkZ+eeXJ39N+VR2g9soO++wQEZEzMbuyo9FoanQSBoCUlBQolfXPTpcuXcLTTz+NL774wuaLiM6bNw/Z2dnSo7ZKlbUZ57JxU9esrNhSbR2UWdkhIiJnYnbYGTZsmBQWjLKysvDPf/4T99xzT73fJz4+Hunp6ejRoweUSiWUSiX27NmDFStWQKlUIjAwECUlJcjKyjJ5XVpaGnQ6HQBAp9PVCF7G58ZjaqPRaKDVak0etmasnrio7Bx2OKkgERE5ObPDzptvvolLly4hLCwMgwcPxuDBg9GiRQukpqbirbfeqvf7DB06FCdOnMCxY8ekR69evTBx4kTpZ5VKZTKBYUJCApKTkxEZGQkAiIyMxIkTJ5Ceni4ds23bNmi1WoSHh5t7ajZlrJ7Yu7LDGZSJiMjZmd1np2nTpvjjjz/wxRdf4Pjx43B1dcWUKVMwYcIEqFSqer+Pp6cnOnXqZLLN3d0dfn5+0vapU6dizpw58PX1hVarxZNPPonIyEj07dsXQHmVKTw8HI8++iiWLVuG1NRUzJ8/H7GxsdBo7NsX5laMgcLV7pUddlAmIiLndlvz7Li7u2P69OmWbksN77zzDuRyOcaNG4fi4mJER0fj/fffl/YrFAps3LgRM2bMQGRkJNzd3RETE4MlS5ZYvW13yhgoXGvpM2NLrOwQEZGzs+83bTW7d+82ee7i4oKVK1di5cqVdb4mLCwMmzZtsnLLLK/AYSo7lX8CaoUcJXoDKztERORUzO6zQ5ZR5CB9dtzUChin+TEOg+fQcyIiciYMO3ZSUDFLsYudw45MJpOGnzepCDtcCJSIiJwJw46dFJYaAABudr6NBVR2Ug5gZYeIiJzQbYWdrKwsfPTRR5g3bx4yMjIAAL///juuXLli0cY5M+P6U652ruwAlf12jLex2GeHiIicidkdlP/44w9ERUXBy8sLFy5cwOOPPw5fX198//33SE5OxmeffWaNdjqdytFYDhB2Km5jGRck5WgsIiJyJmZXdubMmYPJkycjMTHRZJmHESNGYO/evRZtnDNzlNFYANAtxBtKuQy9mpevOl9YqocQws6tIiIisgyzKzuHDx/Gf/7znxrbmzZtetPFN8lUkYOsjQUAS0Z3xLP3tpOe6w0CJXoDNEr7t42IiOhO3dZCoDk5OTW2nz17Fv7+/hZpVGNQUOo4lR2ZTAati8qkLUUlBpSUGZCeW2THlhEREd05s8PO/fffjyVLlqC0tBRA+RdlcnIynn/+eYwbN87iDXRW0nIRDlDZMVIp5FApyifdKSgtw/wNJxC5dCfiL2bauWVERES3z+yw89ZbbyEvLw8BAQEoLCzEoEGD0Lp1a3h6euKVV16xRhudjt4gUFxWPvTcESo7VRlXYc/ML8WPx69CbxBYd+SSnVtFRER0+8zus+Pl5YVt27Zh3759OH78OPLy8tCjRw9ERUVZo31OqeqkfW52XhurOje1ArlFZdiVkI6iirmAtp5Ow7/GGKBUcFomIiJqeG77m7Z///7o37+/JdvSaFSdtE+jdKwAYaw0/fxHirQtI78Ehy5koF+rJvZqFhER0W0z+5v2qaeewooVK2ps//e//41Zs2ZZok1Or6hK52S5XGbn1pgyrsJ+OqW8E3pTb1cAwOaTHGlHREQNk9lh57vvvqu1otOvXz98++23FmmUsytwwM7JRq6qyj8JtVKO5yqGpO8/f8NeTSIiIrojZoedGzduwMvLq8Z2rVaL69evW6RRzq7QgYadVze8UxDUSjmUchke7RuGDkFaAMCNvGI7t4yIiOj2mN1np3Xr1ti8eTNmzpxpsv2XX35By5YtLdYwZ1bgQOtiVff4wJZ4fGDl7/FabnnIySoshd4goHCw225ERES3YnbYmTNnDmbOnIlr165hyJAhAIAdO3bgrbfewvLlyy3dPqdk7LPjCLMn34q3mwoAIASQXVgKX3e1nVtERERkHrPDzmOPPYbi4mK88sorePnllwEAzZs3x6pVqzBp0iSLN9AZGfvsuDjgbazqVAo5tC5K5BSVISO/mGGHiIganNsaej5jxgzMmDED165dg6urKzw8PCzdLqdW6EDrYtWHn4emIuyU2rspREREZrujGe24FtbtceQOyrXxcVMhCeXz7RARETU0Zo/GSktLw6OPPorg4GAolUooFAqTB92aI66LdTPGW1eZBQw7RETU8Jhd2Zk8eTKSk5Px0ksvISgoCDIZR+eYS5pnp8FUdsrDDis7RETUEJkddn777Tf8+uuv6NatmxWa0zg0pNFYQGVlh2GHiIgaIrNvY4WEhEAIYY22NBoNrbIj3cZi2CEiogbI7LCzfPlyvPDCC7hw4YIVmtM4SB2UHWzF87r4GCs77LNDREQNkNnftg8//DAKCgrQqlUruLm5QaVSmezPyMiwWOOcldRBWeVYK57XxdeNlR0iImq4zA47nCX5zhVKfXZY2SEiIrI2s79tY2JirNGORsW4NpZLQ+ugnMewQ0REDc9t3Uc5f/485s+fjwkTJiA9PR1A+UKgp06dsmjjnFVhqQEA4NbAOijnl+ilkWREREQNhdlhZ8+ePejcuTMOHjyI77//Hnl5eQCA48ePY+HChRZvoDMqdOBVz2ujdVFKq51nFXDJCCIialjMDjsvvPAC/vWvf2Hbtm1QqysXhRwyZAgOHDhg0cY5q/zi8uqIu6Zh9NmRyWScWJCIiBoss8POiRMn8MADD9TYHhAQgOvXr1ukUc4ut6i8OuLp0jDCDgD4upePuuOSEURE1NCYHXa8vb2RkpJSY/vRo0fRtGlTizTKmQkhkFdcfhvLs4FUdoDKJSNusLJDREQNjNlhZ/z48Xj++eeRmpoKmUwGg8GAffv24ZlnnsGkSZOs0UanUlCih6FiAmqPBlTZ8fPgXDtERNQwmR12Xn31VbRv3x4hISHIy8tDeHg4Bg4ciH79+mH+/PnWaKNTMVZ1FHJZg1kuAuBioERE1HCZXVpQq9X48MMPsWDBApw4cQJ5eXno3r072rRpY432OR1jfx0PjbJBrRgvrY/FPjtERNTAmF3ZWbJkCQoKChASEoIRI0bgoYceQps2bVBYWIglS5aY9V6rVq1Cly5doNVqodVqERkZiV9++UXaX1RUhNjYWPj5+cHDwwPjxo1DWlqayXskJydj5MiRcHNzQ0BAAJ599lmUlZWZe1o2k1tU3jaPBtRfB2Blh4iIGi6zw87ixYuluXWqKigowOLFi816r2bNmuG1115DfHw8jhw5giFDhmD06NHS5ISzZ8/GTz/9hHXr1mHPnj24evUqxo4dK71er9dj5MiRKCkpwf79+/Hpp59izZo1WLBggbmnZTNS5+QG1F8HqDKLMsMOERE1MGZ/4wohar39cvz4cfj6+pr1XqNGjTJ5/sorr2DVqlU4cOAAmjVrho8//hhr167FkCFDAACrV69Ghw4dcODAAfTt2xdbt27F6dOnsX37dgQGBqJbt254+eWX8fzzz2PRokUm8wA5irwihh0iIiJbqndlx8fHB76+vpDJZGjbti18fX2lh5eXF+655x489NBDt90QvV6Pr776Cvn5+YiMjER8fDxKS0sRFRUlHdO+fXuEhoYiLi4OABAXF4fOnTsjMDBQOiY6Oho5OTk3XbqiuLgYOTk5Jg9baai3sdhnh4iIGqp6f+MuX74cQgg89thjWLx4Mby8vKR9arUazZs3R2RkpNkNOHHiBCIjI1FUVAQPDw+sX78e4eHhOHbsGNRqNby9vU2ODwwMRGpqKgAgNTXVJOgY9xv31WXp0qVm33KzlNyK21geLiq7fP7tMq58nplfiqPJmdh8KhVz7mkLjbLhjCgjIqLGqd5hx7jaeYsWLdCvXz+oVJb5sm7Xrh2OHTuG7OxsfPvtt4iJicGePXss8t51mTdvHubMmSM9z8nJQUhIiFU/06jB3saq6KBcojdg/oaTOHU1By383DG+T6idW0ZERHRzZn/jDho0CAaDAWfPnkV6ejoMBoPJ/oEDB5r1fmq1Gq1btwYA9OzZE4cPH8a7776Lhx9+GCUlJcjKyjKp7qSlpUGn0wEAdDodDh06ZPJ+xtFaxmNqo9FooNFozGrnnVp7MBm7E9Kh83IB0LBmTwbKFy11UclRVGrA6ZTy237HL2djfB87N4yIiOgWzP7GPXDgAB555BFcvHgRQgiTfTKZDHq9/o4aZDAYUFxcjJ49e0KlUmHHjh0YN24cACAhIQHJycnS7bLIyEi88sorSE9PR0BAAABg27Zt0Gq1CA8Pv6N2WNo/158wed7Q+uwA5dWdq9lFMP7aT1zJsmt7iIiI6sPsb9wnnngCvXr1ws8//4ygoKA7mhhv3rx5GD58OEJDQ5Gbm4u1a9di9+7d2LJlC7y8vDB16lTMmTMHvr6+0Gq1ePLJJxEZGYm+ffsCAIYNG4bw8HA8+uijWLZsGVJTUzF//nzExsbavHJjroa0VISRr0d52DFKSM3Fhev5OHQhAw/2aAa5vOFMkkhERI2H2d+4iYmJ+Pbbb6VbT3ciPT0dkyZNQkpKCry8vNClSxds2bIF99xzDwDgnXfegVwux7hx41BcXIzo6Gi8//770usVCgU2btyIGTNmIDIyEu7u7oiJiTF7ckN78GxgHZSByokFjUr1Ane/uRtAeaVqROcgO7SKiIjo5swOOxERETh37pxFws7HH3980/0uLi5YuXIlVq5cWecxYWFh2LRp0x23xdYa5G0s97rnLTqanMmwQ0REDsnsb9wnn3wSc+fORWpqKjp37lxjVFaXLl0s1jhn1tBGYwGmlR0PjVKaDRqonD+IiIjI0Zj9jWvsLPzYY49J22QymTSz8p12UG4sGnplJ7qjDt/9fll6fjmz0B5NIiIiuiWzv3GTkpKs0Y5GpyFWdqqGnSn9m6OgpAx6g8DW02m4nFlgx5YRERHVzexv3LCwMGu0w+mpFDKU6iuH6jfI0VgVYUcmA9oEemDV33vicmYBtp5Ow9WsIhgMgiOyiIjI4Zi96jkA/O9//0P//v0RHByMixcvAihfTuKHH36waOOciUpheqk9NQ1vNFaAZ/lw/jBfN2mZCJ3WBQq5DCV6A67lFduzeURERLUyO+ysWrUKc+bMwYgRI5CVlSX10fH29sby5cst3T6noTdUVnWUchlcVLeVM+2qR6gP5tzTFv8a01naplTIodOWzwrNW1lEROSIzP7Gfe+99/Dhhx/ixRdfhEJRuQhkr169cOLEiZu8snGrGnY8XJR3NBmjvcjlMjw1tA0GtGlisr2ZjysAdlImIiLHZHbYSUpKQvfu3Wts12g0yM/Pt0ijnJG+ytIaDXEk1s0083EDwLBDRESOyeyw06JFCxw7dqzG9s2bN6NDhw6WaJPTMRgEqi4j5nxhx1jZ4W0sIiJyPGZ/686ZMwexsbEoKiqCEAKHDh3Cl19+iaVLl+Kjjz6yRhsbPH21BVO9XBte5+Sb4W0sIiJyZGaHnWnTpsHV1RXz589HQUEBHnnkEQQHB+Pdd9/F+PHjrdHGBq9qf517O+owISLUjq2xPONtrOQMVnaIiMjx3Nb9lIkTJ2LixIkoKChAXl4eAgICLN0up1I17Cwf3w0uKsVNjm54Wgd4ACgPOwUlZXBTO9dtOiIiatjM7rNTWFiIgoLy/4J3c3NDYWEhli9fjq1bt1q8cc6irErYkTfAUVi34u+pQRMPNYQAzqbl2bs5REREJswOO6NHj8Znn30GAMjKykKfPn3w1ltvYfTo0Vi1apXFG+gMDNXm2HFG7XVaAMCfKTl2bgkREZEps8PO77//jrvuugsA8O2330Kn0+HixYv47LPPsGLFCos30BmYVHacNux4AgD+TM21c0uIiIhMmR12CgoK4OlZ/sW2detWjB07FnK5HH379pWWjiBThorRWM5a1QGA9kEVlZ1UVnaIiMixmB12WrdujQ0bNuDSpUvYsmULhg0bBgBIT0+HVqu1eAOdgbGy46xVHcC0siOqDbUnIiKyJ7PDzoIFC/DMM8+gefPmiIiIQGRkJIDyKk9tMysToNc7f2WndYAHFHIZsgpKkZbDBUGJiMhxmB12HnzwQSQnJ+PIkSPYvHmztH3o0KF45513LNo4Z2GcVFDhhCOxjFxUCrRs4g4A2Ho61c6tISIiqnRbE6LodDrodDqTbX369LFIg5yR3mAAACgUzht2AODeTjok7jyHhT+egrtaiXE9m9m7SUREROZXdsh8+vKs49SVHQCYFdUWEyNCIQSwYmeivZtDREQEgGHHJsqMlR0n7rMDlJ/f9IEtAQDXctlvh4iIHAPDjg0YjJUdJw87AODjrgYAFJToUVSqt3NriIiIGHZsorFUdgDAU6OEqqJvUmZBiZ1bQ0RExLBjE8ZJBRtD2JHJZPBxK6/uZOQz7BARkf0x7NhAmb7xhB0A8HVn2CEiIsfBsGMDjWGenapY2SEiIkfCsGMDekPjrOxkMuwQEZEDYNixgcYWdnzcVQCAjIJSO7eEiIiIYccmjGHHmdfGqsrXjZUdIiJyHAw7NtD4Kjvss0NERI6DYccGGlvYqToaq6TMAEPF+RMREdkDw44N6BvRPDtAZdg5m5aL3q9sx4QPD3A2ZSIishuGHRtobJUd49DzG/klyC4sxcGkDLy4/iSEYIWHiIhsj2HHBirDTuO43MbKTlXf/X4ZuxOu2aE1RETU2Nn123fp0qXo3bs3PD09ERAQgDFjxiAhIcHkmKKiIsTGxsLPzw8eHh4YN24c0tLSTI5JTk7GyJEj4ebmhoCAADz77LMoKyuz5ancVJkx7DSOwo5U2TFq6u0KANh37ro9mkNERI2cXcPOnj17EBsbiwMHDmDbtm0oLS3FsGHDkJ+fLx0ze/Zs/PTTT1i3bh327NmDq1evYuzYsdJ+vV6PkSNHoqSkBPv378enn36KNWvWYMGCBfY4pVoZGlllx1WtMHk+pX9zAMCxS1m2bwwRETV6Snt++ObNm02er1mzBgEBAYiPj8fAgQORnZ2Njz/+GGvXrsWQIUMAAKtXr0aHDh1w4MAB9O3bF1u3bsXp06exfft2BAYGolu3bnj55Zfx/PPPY9GiRVCra95SsTWpstM4sk4Ng9sH4F8/n8GJK9ko1RugaqwXgoiI7MKhvnWys7MBAL6+vgCA+Ph4lJaWIioqSjqmffv2CA0NRVxcHAAgLi4OnTt3RmBgoHRMdHQ0cnJycOrUqVo/p7i4GDk5OSYPazKueq5sJJWdqpp4aNDCzx1aFyWKywz4MyXX3k0iIqJGxmG+fQ0GA2bNmoX+/fujU6dOAIDU1FSo1Wp4e3ubHBsYGIjU1FTpmKpBx7jfuK82S5cuhZeXl/QICQmx8NmYMq56Lm8ko7EAoE2ABwBgcr8wyOUydA3xBgAcu5Rpx1YREVFj5DBhJzY2FidPnsRXX31l9c+aN28esrOzpcelS5es+nmVlZ3GE3ZWT+mNZeO64IlBrQAA3SvCzlH22yEiIhuza58do5kzZ2Ljxo3Yu3cvmjVrJm3X6XQoKSlBVlaWSXUnLS0NOp1OOubQoUMm72ccrWU8pjqNRgONRmPhs6ibsc+OXNZ4wk4zHzc81NtNet4t1BsAcORCJoQQkDWia0FERPZl18qOEAIzZ87E+vXrsXPnTrRo0cJkf8+ePaFSqbBjxw5pW0JCApKTkxEZGQkAiIyMxIkTJ5Ceni4ds23bNmi1WoSHh9vmRG6hsS0EWps+LfzgopIjOaMAf1zONtm379x1JF3Pr+OVREREd8auYSc2Nhaff/451q5dC09PT6SmpiI1NRWFhYUAAC8vL0ydOhVz5szBrl27EB8fjylTpiAyMhJ9+/YFAAwbNgzh4eF49NFHcfz4cWzZsgXz589HbGysTas3N2MMO42pz051HholhoWXV9o2HLsibU++UYCJHx3EE/+Lt1fTiIjIydk17KxatQrZ2dm4++67ERQUJD2+/vpr6Zh33nkH9913H8aNG4eBAwdCp9Ph+++/l/YrFAps3LgRCoUCkZGR+Pvf/45JkyZhyZIl9jilWrGyU25M92AAwE/Hr6JMbwAAXMosAABczGBlh4iIrMOufXbqs1aSi4sLVq5ciZUrV9Z5TFhYGDZt2mTJpllUY1sbqy53tfGHr7sa1/NKsP/8DQxs64+sglIAQFGpAYUl+hoTEhIREd0phxmN5cwa26rndVEp5Ihs6QcASEzPAwBkFZZI+zMLSmp9HRER0Z1g2LEBVnYqBWjL+1Gl5xQBgFTZAYCMfIYdIiKyPIYdG2DYqRTg6QIASM8tBgBkF1aGnarBh4iIyFIYdmxACjucWwaBxspOrrGyU1nNyeBtLCIisgKGHRtgZaeSVNnJKa/sVK3mZPI2FhERWQHDjg2UMexIpD47FbexsqrcxmIHZSIisgaGHRswMOxIAjzLw052YSmKSvXIZmWHiIisjGHHBljZqeTlqoJaWf5ndy232GToeQY7KBMRkRUw7NhAY1z1vC4ymQz+HpW3sqr22cnibSwiIrIChh0baIyrnt+Msd/OpYwCFJcZpO2cZ4eIiKyBYccGjH12lAqGHaCy387ZtFyT7eyzQ0RE1sCwYwNlhvLqBSs75YzDz8+m5Zls5zw7RERkDQw7NlCxwDf77FQwTiyYmF5e2TFWeoyLgRIREVkSw44N6I2VHYYdAJWVnYs3CgAATX1coaq4xce5doiIyNIYdmxAX95lh5WdCv4VlR0jHzc1fNzUANhJmYiILI9hxwaMlR3Os1Mu1NfN5Lm3q0oKO1wMlIiILI1hxwbK9JxUsKpW/h7o0sxLeu7lpoKPuwoAcCO/2F7NIiIiJ8WwYwPGSQW56nmliRGh0s9aF5VU7Tl+KdteTSIiIifFsGMDXC6iplFdg6WfC0v1iOoQCADYcioVoiIcEhERWQLDjg1wIdCa3NRK/HNEe3i7qfBQr2YY2NYfbmoFrmQVYs3+C3jl59PIKWL/HSIiunNKezegMWBlp3bTB7bC9IGtpOeD2wfg5z9SsPin0wCAMD93/L1vmL2aR0REToKVHRvQM+zUy/BOOpPnyRkFdmoJERE5E4YdG2DYqZ+oDoG4t6NOmmDwalahnVtERETOgGHHBvQcjVUvLioFPni0J1aM7w4AuMKwQ0REFsCwYwN6rnpulmBvVwDAlUyGHSIiunMMOzZgDDtc9bx+mvqUh5303GIUl5UvDFpQUiaNaiMiIjIHw44NSJUdOS93ffi5q6FRll+r1Owi/HUtD/1e24lJnxyyc8uIiKgh4revDUiVHV7tepHJZGhacSvrcmYhXvjuBLIKSvHbuevI5tpZRERkJn792gArO+Yz3sp6c2sCDl3IkLYfv5xlpxYREVFDxW9fG5BGY/Fq15uxsnM0OQsAoHUpn//y2KUsO7WIiIgaKn792oBeWvWcl7u+jCOygPKgM+Pu1gCAo8mZ9moSERE1UPz2tQHOs2O+plXCzriezRDZyg9AeWVHCIGk6/lYtfs8Ckv09moiERE1EFwbywaktbE4z0696bxcpJ8nRoQixNcNaoUcmQWliL+YiQc/iAMAuGsUmBTZ3E6tJCKihoCVHRuQVj1nZafeeoT6oGuINyb0CUXrAE9olAqEB2sBAI98eFA6jn14iIjoVljZsQGuem4+V7UCP8T2N9n2aN8wnEnJQXGZQdp24Xq+rZtGREQNDMOOlVWd9Zdh586M69kMwzvrcDApAyVlBvzjf/E4m5YHIQRkrJoREVEd7Hoba+/evRg1ahSCg4Mhk8mwYcMGk/1CCCxYsABBQUFwdXVFVFQUEhMTTY7JyMjAxIkTodVq4e3tjalTpyIvL8+GZ3FzZQw7FuWmVmJwuwAMbhcApVyGvOIynEnJxY/Hr0rzGREREVVl17CTn5+Prl27YuXKlbXuX7ZsGVasWIEPPvgABw8ehLu7O6Kjo1FUVCQdM3HiRJw6dQrbtm3Dxo0bsXfvXkyfPt1Wp3BLBlH5Baxk2LEYtVKOlv7uAIBHPz6Ip748iu9/v2znVhERkSOy622s4cOHY/jw4bXuE0Jg+fLlmD9/PkaPHg0A+OyzzxAYGIgNGzZg/PjxOHPmDDZv3ozDhw+jV69eAID33nsPI0aMwJtvvong4GCbnUtdWNmxnjaBnjiblocb+SUAgJNXsvG3XiF2bhURETkahx2NlZSUhNTUVERFRUnbvLy8EBERgbi48mHHcXFx8Pb2loIOAERFRUEul+PgwYM13tOouLgYOTk5Jg9r0TPsWE27QE+T53+xszIREdXCYcNOamoqACAwMNBke2BgoLQvNTUVAQEBJvuVSiV8fX2lY2qzdOlSeHl5SY+QEOtVA0zCDjvRWlTbQA+T5+fTHaevFhEROQ6HDTvWNG/ePGRnZ0uPS5cuWe2zjGFHJgPkrOxYVNcQb6gVcgR4agAAV7OLUFBSZudWERGRo3HYsKPT6QAAaWlpJtvT0tKkfTqdDunp6Sb7y8rKkJGRIR1TG41GA61Wa/KwFj0nFLSaIC9X/PTkAPw4cwB83FQAgCTeyiIiomocNuy0aNECOp0OO3bskLbl5OTg4MGDiIyMBABERkYiKysL8fHx0jE7d+6EwWBARESEzdtcm8oVzxl2rKGdzhM6Lxe08i+/pXX+GsMOERGZsutorLy8PJw7d056npSUhGPHjsHX1xehoaGYNWsW/vWvf6FNmzZo0aIFXnrpJQQHB2PMmDEAgA4dOuDee+/F448/jg8++AClpaWYOXMmxo8f7xAjsYCqK54z7FhTS393HLmYib+usd8OERGZsmvYOXLkCAYPHiw9nzNnDgAgJiYGa9aswXPPPYf8/HxMnz4dWVlZGDBgADZv3gwXl8pFIr/44gvMnDkTQ4cOhVwux7hx47BixQqbn0tdWNmxDWNl5y9WdoiIqBq7hp27774bQtQ9661MJsOSJUuwZMmSOo/x9fXF2rVrrdE8i9AbytdxYtixrpYVYedsWi6XjyAiIhMO22fHWegr1qzk7MnWFR6shVwG/Jmai8U/nZbWJCspM2DRj6fwvwMX7dxCIiKyF4YdKyurqOzIWWmwqqberlh8f0cAwJr9FzB33XGU6g14Y8ufWLP/Al7acNJkUVYiImo8uOq5lRlY2bGZRyObQ+uqwtxvjmP90Ss4m5aLMymVs2On5xZD5+Vyk3cgIiJnxMqOlUmVHYYdmxjdrSn+O6knXFRynLqag6rFnEuZBfZrGBER2Q0rO1ZmXPWclR3bGdI+EHueHYwtp1KRdD0f+8/dQEJaLi5lFKB3c197N4+IiGyMYcfKyirm2WFlx7YCtS6YFNkcAPDct8crwk6hfRtFRER2wdtYVqZnZcfuQnzcAPA2FhFRY8WwY2XGtbE4Gst+QnzLw87FG/lY9OMpfPJbkp1bREREtsTbWFZmDDtKBcOOvYT4ugIADl/IxOELmVDKZXgkIhQuKoWdW0ZERLbAyo6VcdVz+zPexjIqMwgkpnENLSKixoJhx8qksMM+O3bj76mBRmn6p37qaradWkNERLbGsGNlDDv2J5PJ0MzH1WTb6SqTDRIRkXNj2LEy42gsdlC2L2MnZR83FQDgxJVsrNx1DuuPXrZns4iIyAbYQdnK8ovLAADuGl5qexrfOxSp2UV4ckgbxK79HUeTs3A0OQsqhQzDwnX8/RAROTH+P7yVZReWAgC0LrzU9nRvJx3u7aSD3iDgopKjqLR8GY9SvcDBpBsY0j7Qzi0kIiJr4W0sKzOGHS9XlZ1bQkB536n2Oq3Jtl8Tr9upNUREZAsMO1bGsON4hrYPAADc21EHAPgt8ToMBoGiUj1K9QYIIbBq93kMfnM3diWk4/MDF9H7le34x/+O4DcGIyKiBof3Vqwsp7C8z46WYcdhxA5ujQkRoVDKZdhyOhWJ6XmIfG0H0nKKoZDL0NrfAwlpueXHfvE7ikr1MAhgy6k0/Jp4HccWDINayf9OICJqKPj/2FbGyo7jkctlaOKhgbebGl2aegEA0nKKAZRPFWAMOmF+bigoKQ8693UJgo+bCgUlepzkHD1ERA0KKztWxrDj2KYPbIXXNp/B33qGICayObIKS7D37DWE+rmjY7AW//hfPJp4qPHm37pi5tqj2H4mDUcuZKBHqI+9m05ERPXEsGNlOQw7Dm1klyCM7BIkPfdyU+HRSHfp+Xcz+kk/92ruUxF2MjF9YOV7XLieD7VSjmBv04kLq7qUUQClQgad1gVvbk2Ai1KBJ4e2sezJEBFRrRh2rEyq7Lgx7DR0vcLKqznxFzMhhIBMJsOfqTm4/9/7oHVRYtczd2PxT6fh46bCiyPDpdddzyvGiHd/hatagU8m98bKXecBlA+HbxPoaZdzISJqTNhnx4qEELyN5UQ6N/OCWinHjfwSfLLvAn45kYLnvzuBkjIDrueV4Kkvj+Lb+Mv48NcknK3o9wMAG49fRW5xGdJzi7Fq93lp+4ZjV+xxGkREjQ4rO1ZUUKJHWcXaWAw7DZ9GqUCXpl44cjETL288XWP/roRr0s/rj15BtxBvuKgUWH/sqrT95xMp0s8bjl7F3HvaQc5104iIrIphx4qMVR2VQgZXlcLOrSFLeKBHU8QnZ6K9TouiUj0u3MjHiyM64PXNf6JUL6Tj1uy7gMJS/U3f60pWIY5czESfFr7WbjYRUaPGsGNFlUtFqCDjQqBOYWJEGB7uFQKlQg4hBIrLDHBRKfDH5Wz8ePwqJvQJlW5bVdUxWItTV8tXWndRyRHdUYcfjl3FuiOXGHaIiKyMfXasiP11nJNSUf7PRiaTwaWiYvfy6E5YOrYzFo4Kx6huwQCAe8IDseC+cIT4umL+yHC0CfAAAPQI9cGjfcMAAD/9cVX6O0nPLUJWQYmtT4eIyOmxsmNFxmHnnD3Z+Xm5qTChTygAYN7w9rirdRMMbh8AF5UCjw1oAaB89FXiznOI6hCInmE+aBfoiYS0XGw4egXRHXWIXr4XJWUG/HdST9zVxl9670sZBQCAEF83258YEZETYGXHiljZaZw8XVQY3jlIqvoYPTW0Db6e3heT+zWHTCbDIxHl4ejTuAt47ZczyC4sRWGpHo+tOYxPfktCmd6AH45dweA3d2P4u78iJbvQHqdDRNTgMexYEcMOVaVSyBHR0k8affVAj6bwclXhr2v52FAxYqtPC1+U6gWWbDyNjgu34OmvjqHMIJBXXIZ3tyfWeM/M/BJ8G38ZedX6CBERUSWGHSvi7Ml0M1oXFT6fGgFfdzUAIKpDIL56vC9efaAztC5KFJcZAADDwgMBAN8cuYTEKvP3XM4swLhV+/HMuuOYufZ3CCFqfggREbHPjjWxskO30rmZF76f0Q8b/7iKRyLCIJeX394a26Mp0nOK4apWwN9Tg+mfHcHW02l4+qtj+G5GP1zJKsSjHx9ESnYRAGB3wjX8cOwqxnRvauczIiJyPAw7VsSwQ/XRvIk7Zg4xXSfLRaVAqF9lh+RF93dE/MVMnE7JwdhV+5GaXYjMglK0DvDAgNZNsGb/BSz66RR6hvnAXaOEEAJ+HhpbnwoRkUPibSwrYtghSwn2dsX7E3tAKZfhTEoOMgtK0bWZF775RyReHNkBXZp5IaugFBM+PIDIpTtw17Jd+C3xOgAgp6gUB/+6gTK9AUIInLySjVK9Aaev5uCpL4/i9+TMWj/zRl4xrmaZ1yn64o18PPG/eMRfzLjjcyYishRWdqwom0PPyYIiWvph86y7EH8xE25qJaI6BMJVXT7i64O/98T9//4NlzMrw8mUNYcQ6uuG5IwClOoFRnTWwUOjxDdHLqNPc19czMhHWk4x9iZew4+xAxDq54bEtFzkl+jhoVHigff3objUgC+nR0DrosK13GJ0C/XGqas5cFEq0LmZV402zt9wEr8mXsdf1/Ow+emBJkth6A0CR5Mz4aJSoFPTmq8lIrIWpwk7K1euxBtvvIHU1FR07doV7733Hvr06WPXNlWGHae5zGRnrQM80Tqg5krpwd6u+DimN97beQ4jOuuw/UwaNp1Ixflr+dIxm06kSj8fulBZeckqKMXkNYcwvncI3tiSgFK9gKeLErlF5SO8Yj45XOtor+GddFgyuhP8Pctvl/2aeA2/VlSTzqblYffZdPRt6Ye9Z69j2+k07PwzDZkFpVDIZfjl6bvQliu+E5GNyIQTDOH4+uuvMWnSJHzwwQeIiIjA8uXLsW7dOiQkJCAgIOCWr8/JyYGXlxeys7Oh1Wot1q55359AckY+lozuhFb+HhZ7X6JbEULg1NUc5BWXQad1wYG/buCF708AAGIiw7DpZCqEEHhvQg/M+voo0nKKa7xHsJcLPF1USKgYAebnrsaN/BJ4u6mQW1QGvUEg1NcNL90XjsMXMrD+6BVcyy2Gj5sKmQWl8HNXI6+4TBpVBgAyGSAEcH/XYOiFwNZTqZDJZOgW4o2x3Zvi4d4hkMlkMBhEjQVShRAwCEAhl+HgXzdw8UYBxnRvin3nr2PnmXScv5aH89fyIARwdzt//GNQK7Ty94AQAjKZDNtOp+Gf608g1NcNTTzUiL+YhQ5Bnni0bxiGtA+QZsYmooajvt/fThF2IiIi0Lt3b/z73/8GABgMBoSEhODJJ5/ECy+8cMvXWyvsEDmSb+Mvo6hUj4kRoSjRG1CmF3DXKHEttxj/+vk0fjx+FX+PCMNDvUKw4dgVTOgTCneNAp/8loSoDoHo08IXV7OLEOipwdm0PDzxeTySK2Z3Nmrq7YoPJ/XC6JW/SQujNvNxxT3hgbgnPBAapRzjVsXV2cb7ugThXHoeEtPzEObrhpb+HggP8kRbnSf+vfMcruUWY2SXIHx+4CIMojKA1cbLVYX7uwZj/dErCPDU4GJGAfSG2v/vLsjLBY/0CcWILkHQKK0XevQGgaJSAwpL9Sgs0aOoVC/9XFha/rxymwF6gwEuagXc1Uq4qRVwVSvgplbAreJ51Z8VcudYf09vEDhyIRMnrmRDKZdBo5JDo1RAo5RDraz8uep2k30qOdQKObgcoeMJ1LpAZeH/qGg0YaekpARubm749ttvMWbMGGl7TEwMsrKy8MMPP9R4TXFxMYqLK/9LNicnByEhIQw71KgVleprzPp8M+k5RZj66RFcvJGPIe0DcE+4DoPa+cNDo8SuhHQkpOZiUFt/tNd5miyEO/6/cTjwVwZkMmDlIz3QTueJn/9IwfLtZ1FHFqmVRilHcZkBSrkME/qEomuIN1r5uyO/WI+3tiXgaHJWjdeM7dEU3UN9kF1Qgh6hPtibeB3fHLmEjDoCExFZzs65g9DSwnc56ht2GnxnkuvXr0Ov1yMwMNBke2BgIP78889aX7N06VIsXrzYFs0jajDMCToAEKB1wY8z+5sEGaPB7QIwuF3tt5Cfu7c9Zn7xO6YPbIkRnYMAlC+l0TrAA6/8fAaD2vlj6oAWSM0uwvlreTjw1w0cv5SNgW39Eebnhs/2X8CDPZthSv8W+OHYFfRv3QRtqvX/6RHmjWfWHUdCai7m3NMOeiFQWmbAA92bmtwe69e6CWZFtcEvJ1PwxYFknLiSbdY1MJdCLoOrSgEXVXmVxlVV/nBRK+CilEvbjPsVMhkKS/UoKNGjoKQMBSXlVaD8kjIUlphur6tq1RC1aOKOAa2bQKmQo7hMj+IyA4pLDZU/lxlQXFrl5zJ9xX4DSiqOIcdT2/9X2OyzG3pl5+rVq2jatCn279+PyMhIaftzzz2HPXv24ODBgzVew8oOERFRw9doKjtNmjSBQqFAWlqayfa0tDTodLpaX6PRaKDRcMI1IiKixqDBDz9Qq9Xo2bMnduzYIW0zGAzYsWOHSaWHiIiIGqcGX9kBgDlz5iAmJga9evVCnz59sHz5cuTn52PKlCn2bhoRERHZmVOEnYcffhjXrl3DggULkJqaim7dumHz5s01Oi0TERFR49PgOyhbAufZISIianjq+/3d4PvsEBEREd0Mww4RERE5NYYdIiIicmoMO0REROTUGHaIiIjIqTHsEBERkVNj2CEiIiKnxrBDRERETo1hh4iIiJyaUywXcaeMk0jn5OTYuSVERERUX8bv7VstBsGwAyA3NxcAEBISYueWEBERkblyc3Ph5eVV536ujQXAYDDg6tWr8PT0hEwmM/v1OTk5CAkJwaVLl7i21i3wWtUfr5V5eL3qj9eq/nit6s8e10oIgdzcXAQHB0Mur7tnDis7AORyOZo1a3bH76PVavmPoZ54reqP18o8vF71x2tVf7xW9Wfra3Wzio4ROygTERGRU2PYISIiIqfGsGMBGo0GCxcuhEajsXdTHB6vVf3xWpmH16v+eK3qj9eq/hz5WrGDMhERETk1VnaIiIjIqTHsEBERkVNj2CEiIiKnxrBDRERETo1hxwJWrlyJ5s2bw8XFBRERETh06JC9m2R3ixYtgkwmM3m0b99e2l9UVITY2Fj4+fnBw8MD48aNQ1pamh1bbDt79+7FqFGjEBwcDJlMhg0bNpjsF0JgwYIFCAoKgqurK6KiopCYmGhyTEZGBiZOnAitVgtvb29MnToVeXl5NjwL27jVtZo8eXKNv7N7773X5JjGcq2WLl2K3r17w9PTEwEBARgzZgwSEhJMjqnPv7vk5GSMHDkSbm5uCAgIwLPPPouysjJbnorV1eda3X333TX+tp544gmTYxrDtVq1ahW6dOkiTRQYGRmJX375RdrfUP6mGHbu0Ndff405c+Zg4cKF+P3339G1a1dER0cjPT3d3k2zu44dOyIlJUV6/Pbbb9K+2bNn46effsK6deuwZ88eXL16FWPHjrVja20nPz8fXbt2xcqVK2vdv2zZMqxYsQIffPABDh48CHd3d0RHR6OoqEg6ZuLEiTh16hS2bduGjRs3Yu/evZg+fbqtTsFmbnWtAODee+81+Tv78ssvTfY3lmu1Z88exMbG4sCBA9i2bRtKS0sxbNgw5OfnS8fc6t+dXq/HyJEjUVJSgv379+PTTz/FmjVrsGDBAnucktXU51oBwOOPP27yt7Vs2TJpX2O5Vs2aNcNrr72G+Ph4HDlyBEOGDMHo0aNx6tQpAA3ob0rQHenTp4+IjY2Vnuv1ehEcHCyWLl1qx1bZ38KFC0XXrl1r3ZeVlSVUKpVYt26dtO3MmTMCgIiLi7NRCx0DALF+/XrpucFgEDqdTrzxxhvStqysLKHRaMSXX34phBDi9OnTAoA4fPiwdMwvv/wiZDKZuHLlis3abmvVr5UQQsTExIjRo0fX+ZrGeq2EECI9PV0AEHv27BFC1O/f3aZNm4RcLhepqanSMatWrRJarVYUFxfb9gRsqPq1EkKIQYMGiaeffrrO1zTWayWEED4+PuKjjz5qUH9TrOzcgZKSEsTHxyMqKkraJpfLERUVhbi4ODu2zDEkJiYiODgYLVu2xMSJE5GcnAwAiI+PR2lpqcl1a9++PUJDQxv9dUtKSkJqaqrJtfHy8kJERIR0beLi4uDt7Y1evXpJx0RFRUEul+PgwYM2b7O97d69GwEBAWjXrh1mzJiBGzduSPsa87XKzs4GAPj6+gKo37+7uLg4dO7cGYGBgdIx0dHRyMnJkf5L3hlVv1ZGX3zxBZo0aYJOnTph3rx5KCgokPY1xmul1+vx1VdfIT8/H5GRkQ3qb4oLgd6B69evQ6/Xm/wSASAwMBB//vmnnVrlGCIiIrBmzRq0a9cOKSkpWLx4Me666y6cPHkSqampUKvV8Pb2NnlNYGAgUlNT7dNgB2E8/9r+poz7UlNTERAQYLJfqVTC19e30V2/e++9F2PHjkWLFi1w/vx5/POf/8Tw4cMRFxcHhULRaK+VwWDArFmz0L9/f3Tq1AkA6vXvLjU1tda/PeM+Z1TbtQKARx55BGFhYQgODsYff/yB559/HgkJCfj+++8BNK5rdeLECURGRqKoqAgeHh5Yv349wsPDcezYsQbzN8WwQ1YxfPhw6ecuXbogIiICYWFh+Oabb+Dq6mrHlpEzGT9+vPRz586d0aVLF7Rq1Qq7d+/G0KFD7dgy+4qNjcXJkydN+slR7eq6VlX7dXXu3BlBQUEYOnQozp8/j1atWtm6mXbVrl07HDt2DNnZ2fj2228RExODPXv22LtZZuFtrDvQpEkTKBSKGj3P09LSoNPp7NQqx+Tt7Y22bdvi3Llz0Ol0KCkpQVZWlskxvG6Qzv9mf1M6na5GB/iysjJkZGQ0+uvXsmVLNGnSBOfOnQPQOK/VzJkzsXHjRuzatQvNmjWTttfn351Op6v1b8+4z9nUda1qExERAQAmf1uN5Vqp1Wq0bt0aPXv2xNKlS9G1a1e8++67DepvimHnDqjVavTs2RM7duyQthkMBuzYsQORkZF2bJnjycvLw/nz5xEUFISePXtCpVKZXLeEhAQkJyc3+uvWokUL6HQ6k2uTk5ODgwcPStcmMjISWVlZiI+Pl47ZuXMnDAaD9H/IjdXly5dx48YNBAUFAWhc10oIgZkzZ2L9+vXYuXMnWrRoYbK/Pv/uIiMjceLECZOAuG3bNmi1WoSHh9vmRGzgVteqNseOHQMAk7+txnCtamMwGFBcXNyw/qZs1hXaSX311VdCo9GINWvWiNOnT4vp06cLb29vk57njdHcuXPF7t27RVJSkti3b5+IiooSTZo0Eenp6UIIIZ544gkRGhoqdu7cKY4cOSIiIyNFZGSknVttG7m5ueLo0aPi6NGjAoB4++23xdGjR8XFixeFEEK89tprwtvbW/zwww/ijz/+EKNHjxYtWrQQhYWF0nvce++9onv37uLgwYPit99+E23atBETJkyw1ylZzc2uVW5urnjmmWdEXFycSEpKEtu3bxc9evQQbdq0EUVFRdJ7NJZrNWPGDOHl5SV2794tUlJSpEdBQYF0zK3+3ZWVlYlOnTqJYcOGiWPHjonNmzcLf39/MW/ePHucktXc6lqdO3dOLFmyRBw5ckQkJSWJH374QbRs2VIMHDhQeo/Gcq1eeOEFsWfPHpGUlCT++OMP8cILLwiZTCa2bt0qhGg4f1MMOxbw3nvvidDQUKFWq0WfPn3EgQMH7N0ku3v44YdFUFCQUKvVomnTpuLhhx8W586dk/YXFhaK//u//xM+Pj7Czc1NPPDAAyIlJcWOLbadXbt2CQA1HjExMUKI8uHnL730kggMDBQajUYMHTpUJCQkmLzHjRs3xIQJE4SHh4fQarViypQpIjc31w5nY103u1YFBQVi2LBhwt/fX6hUKhEWFiYef/zxGv+h0ViuVW3XCYBYvXq1dEx9/t1duHBBDB8+XLi6uoomTZqIuXPnitLSUhufjXXd6lolJyeLgQMHCl9fX6HRaETr1q3Fs88+K7Kzs03epzFcq8cee0yEhYUJtVot/P39xdChQ6WgI0TD+ZuSCSGE7epIRERERLbFPjtERETk1Bh2iIiIyKkx7BAREZFTY9ghIiIip8awQ0RERE6NYYeIiIicGsMOEREROTWGHSKiai5cuACZTCYtEWBvkydPxpgxY+zdDKIGi2GHiGxizZo18Pb2tnczHJqjhSwiZ8GwQ0RERE6NYYeIAADffvstOnfuDFdXV/j5+SEqKgr5+fnS/o8++ggdOnSAi4sL2rdvj/fff1/aZ6xIfP/99xg8eDDc3NzQtWtXxMXFAQB2796NKVOmIDs7GzKZDDKZDIsWLQIAFBcX45lnnkHTpk3h7u6OiIgI7N69W3pvY0Voy5Yt6NChAzw8PHDvvfciJSXFpP2ffPIJOnbsCI1Gg6CgIMycOVPal5WVhWnTpsHf3x9arRZDhgzB8ePHzbo+J0+exPDhw+Hh4YHAwEA8+uijuH79urT/7rvvxlNPPYXnnnsOvr6+0Ol00jka/fnnnxgwYABcXFwQHh6O7du3QyaTYcOGDQAgrb7dvXt3yGQy3H333Savf/PNNxEUFAQ/Pz/ExsaitLTUrHMgarRsuhIXETmkq1evCqVSKd5++21pdeOVK1dKC2Z+/vnnIigoSHz33Xfir7/+Et99953w9fUVa9asEUIIkZSUJACI9u3bi40bN4qEhATx4IMPirCwMFFaWiqKi4vF8uXLhVarlVaYNr73tGnTRL9+/cTevXvFuXPnxBtvvCE0Go04e/asEEKI1atXC5VKJaKiosThw4dFfHy86NChg3jkkUek9r///vvCxcVFLF++XCQkJIhDhw6Jd955R9ofFRUlRo0aJQ4fPizOnj0r5s6dK/z8/MSNGzdqvR7G8zl69KgQQojMzExppeYzZ86I33//Xdxzzz1i8ODB0msGDRoktFqtWLRokTh79qz49NNPTVaHLisrE+3atRP33HOPOHbsmPj1119Fnz59BACxfv16IYQQhw4dEgDE9u3bRUpKitS+mJgYodVqxRNPPCHOnDkjfvrpJ+Hm5ib++9//3uFvnqhxYNghIhEfHy8AiAsXLtS6v1WrVmLt2rUm215++WURGRkphKgMBx999JG0/9SpUwKAOHPmjBCiPLR4eXmZvMfFixeFQqEQV65cMdk+dOhQMW/ePOl1AMS5c+ek/StXrhSBgYHS8+DgYPHiiy/W2vZff/1VaLVaUVRUVOOc/vOf/9T6muph5+WXXxbDhg0zOebSpUsCgLQi/aBBg8SAAQNMjundu7d4/vnnhRBC/PLLL0KpVJqsCL1t2zaTsFP9c41iYmJEWFiYKCsrk7b97W9/Ew8//HCt7SciU0r71JOIyJF07doVQ4cORefOnREdHY1hw4bhwQcfhI+PD/Lz83H+/HlMnToVjz/+uPSasrIyeHl5mbxPly5dpJ+DgoIAAOnp6Wjfvn2tn3vixAno9Xq0bdvWZHtxcTH8/Pyk525ubmjVqpXJe6enp0vvf/XqVQwdOrTWzzh+/Djy8vJM3g8ACgsLcf78+TqvSfX32LVrFzw8PGrsO3/+vNT+qudfvZ0JCQkICQmBTqeT9vfp06denw8AHTt2hEKhMHnvEydO1Pv1RI0Zww4RQaFQYNu2bdi/fz+2bt2K9957Dy+++CIOHjwINzc3AMCHH36IiIiIGq+rSqVSST/LZDIAgMFgqPNz8/LyoFAoEB8fX+O9qgaLqu9rfG8hBADA1dX1pueWl5eHoKAgk35ARvUdHZaXl4dRo0bh9ddfr7HPGOrqaufNzt8c1nxvImfHsENEAMq/PPv374/+/ftjwYIFCAsLw/r16zFnzhwEBwfjr7/+wsSJE2/7/dVqNfR6vcm27t27Q6/XIz09HXfddddtva+npyeaN2+OHTt2YPDgwTX29+jRA6mpqVAqlWjevPltfUaPHj3w3XffoXnz5lAqb+//Ntu1a4dLly4hLS0NgYGBAIDDhw+bHKNWqwGgxnUiojvD0VhEhIMHD+LVV1/FkSNHkJycjO+//x7Xrl1Dhw4dAACLFy/G0qVLsWLFCpw9exYnTpzA6tWr8fbbb9f7M5o3b468vDzs2LED169fR0FBAdq2bYuJEydi0qRJ+P7775GUlIRDhw5h6dKl+Pnnn+v93osWLcJbb72FFStWIDExEb///jvee+89AEBUVBQiIyMxZswYbN26FRcuXMD+/fvx4osv4siRI/V6/9jYWGRkZGDChAk4fPgwzp8/jy1btmDKlCn1Dib33HMPWrVqhZiYGPzxxx/Yt28f5s+fD6CyChYQEABXV1ds3rwZaWlpyM7Orvc1IKK6MewQEbRaLfbu3YsRI0agbdu2mD9/Pt566y0MHz4cADBt2jR89NFHWL16NTp37oxBgwZhzZo10lDp+ujXrx+eeOIJPPzww/D398eyZcsAAKtXr8akSZMwd+5ctGvXDmPGjMHhw4cRGhpa7/eOiYnB8uXL8f7776Njx4647777kJiYCKA8SGzatAkDBw7ElClT0LZtW4wfPx4XL16UKiy3EhwcjH379kGv12PYsGHo3LkzZs2aBW9vb8jl9fu/UYVCgQ0bNiAvLw+9e/fGtGnT8OKLLwIAXFxcAABKpRIrVqzAf/7zHwQHB2P06NH1vgZEVDeZMN74JiIim9q3bx8GDBiAc+fOmXTAJiLLYtghIrKR9evXw8PDA23atMG5c+fw9NNPw8fHB7/99pu9m0bk1NhBmYjIRnJzc/H8888jOTkZTZo0QVRUFN566y17N4vI6bGyQ0RERE6NHZSJiIjIqTHsEBERkVNj2CEiIiKnxrBDRERETo1hh4iIiJwaww4RERE5NYYdIiIicmoMO0REROTUGHaIiIjIqf0/w5oQgV8xtF0AAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "a = seaborn.lineplot(data=calculate_statistics(my_dataset.correct_sentences))\n",
    "a.set_xlabel(\"sentence length\")\n",
    "a.set_ylabel(\"sentence count\")\n",
    "a.set_title(\"Correct sentence count\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "d5c1df06",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'Broken sentence count')"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "b = seaborn.lineplot(data=calculate_statistics(map(lambda item: item[0], my_dataset.broken_sentences)))\n",
    "b.set_xlabel(\"sentence length\")\n",
    "b.set_ylabel(\"sentence count\")\n",
    "b.set_title(\"Broken sentence count\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6f26870a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tokens [[1, 2, 3, 4], [5, 6, 7, 8, 9], [10, 11]]\n",
      "lengths: [4, 5, 2]\n",
      "count of generatable items 11\n",
      "iter: 0------------------------\n",
      "\n",
      "copy count: 5\n",
      "tensor([[1, 0, 0, 0, 0],\n",
      "        [1, 2, 0, 0, 0],\n",
      "        [1, 2, 3, 0, 0],\n",
      "        [1, 2, 3, 4, 0],\n",
      "        [5, 0, 0, 0, 0]], dtype=torch.int32)\n",
      "iter: 1------------------------\n",
      "\n",
      "copy count: 5\n",
      "tensor([[ 5,  6,  0,  0,  0],\n",
      "        [ 5,  6,  7,  0,  0],\n",
      "        [ 5,  6,  7,  8,  0],\n",
      "        [ 5,  6,  7,  8,  9],\n",
      "        [10,  0,  0,  0,  0]], dtype=torch.int32)\n",
      "iter: 2------------------------\n",
      "\n",
      "copy count: 1\n",
      "tensor([[10, 11,  0,  0,  0],\n",
      "        [ 0,  0,  0,  0,  0],\n",
      "        [ 0,  0,  0,  0,  0],\n",
      "        [ 0,  0,  0,  0,  0],\n",
      "        [ 0,  0,  0,  0,  0]], dtype=torch.int32)\n",
      "iter: 3------------------------\n",
      "\n",
      "copy count: 0\n",
      "tensor([[0, 0, 0, 0, 0],\n",
      "        [0, 0, 0, 0, 0],\n",
      "        [0, 0, 0, 0, 0],\n",
      "        [0, 0, 0, 0, 0],\n",
      "        [0, 0, 0, 0, 0]], dtype=torch.int32)\n",
      "iter: 4------------------------\n",
      "\n",
      "copy count: 0\n",
      "tensor([[0, 0, 0, 0, 0],\n",
      "        [0, 0, 0, 0, 0],\n",
      "        [0, 0, 0, 0, 0],\n",
      "        [0, 0, 0, 0, 0],\n",
      "        [0, 0, 0, 0, 0]], dtype=torch.int32)\n"
     ]
    }
   ],
   "source": [
    "from train import RegressiveBufferGenerator, copy_unpadded_tokens_into_buffer\n",
    "import torch\n",
    "import functools\n",
    "import torch\n",
    "import functools\n",
    "\n",
    "tokens = [\n",
    "    [1, 2, 3, 4],\n",
    "    [5, 6, 7, 8, 9],\n",
    "    [10, 11]\n",
    "]\n",
    "x = torch.zeros(3, 5, dtype=torch.int32)\n",
    "lengths = list(map(lambda i: len(i), tokens))\n",
    "print(\"tokens\", tokens)\n",
    "# print(\"x before update\\n\",x)\n",
    "copy_unpadded_tokens_into_buffer(tokens, x)\n",
    "# print(\"x after update\\n\", x)\n",
    "print(\"lengths:\", lengths)\n",
    "autoregressive_generator = RegressiveBufferGenerator(x, lengths)\n",
    "print(\"count of generatable items\", len(autoregressive_generator))\n",
    "y = torch.zeros(5, x.shape[1], dtype=torch.int32)\n",
    "\n",
    "for i in range(5):\n",
    "    print(f\"iter: {i}------------------------\\n\")\n",
    "    copy_count = autoregressive_generator.generate_into(y, 5)\n",
    "    print(f\"copy count: {copy_count}\")\n",
    "    print(y)\n",
    "    y.zero_()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.3"
  },
  "widgets": {
   "application/vnd.jupyter.widget-state+json": {
    "state": {},
    "version_major": 2,
    "version_minor": 0
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
